package lambda05;
/**
 * Supplier接口:
 *   适用于只获取结果不传递参数的操作
 *
 *  @FunctionalInterface
 * public interface Supplier<T> {
T get();
}

Arrays类中的toString方法:
static String toString(int[] a)
将数组中的元素拼接成一个字符串,返回这个字符串
 */
import org.junit.Test;

import java.util.Arrays;
import java.util.Random;
import java.util.function.Supplier;

public class SupplierDemo {
    @Test
    public void test01(){
        // 获取一个1—10的随机数
        int i = new Random().nextInt(10) + 1;// [0,11)
        System.out.println(i);
    }

    @Test
    public void test02(){
        // Supplier s = ()->{return new Random().nextInt(10) + 1};
        Supplier s = ()-> new Random().nextInt(10) + 1;
        System.out.println(s.get());   // 1-10的随机数
    }

    @Test
    public void test03(){
        // 获取10个1-10的随机数，将这些随机数存到一个数组中，最后打印数组中的元素
        int[] arr = new int[10];
        Supplier s = ()-> new Random().nextInt(10) + 1;

        for (int i = 0; i < 10; i++) {
            arr[i]= (int) s.get();
        }

        Supplier s2 = ()-> Arrays.toString(arr);
        System.out.println(s2.get()); // [8, 2, 2, 1, 5, 4, 7, 5, 8, 1]
    }
}


/*
*    class Supplier$$Lambda$1 implements Supplier<Integer>{
*
*       public Integer get(){
*         return return new Random().nextInt(10) + 1;
*       }
*   }
* */



